package com.ctshk.common.constant;

public interface RedisConstants {

    /**
     * 总缓存前缀
     */
    String KEY_PREFIX = "ctshk:crm:";

    /**
     * 存储权限前缀
     */
    String AUTHORITY_PREFIX = "ROLE_";

    /**
     * 存储权限属性
     */
    String AUTHORITY_CLAIM_NAME = "authorities";

    /**
     * 认证信息Http请求头
     */
    String JWT_TOKEN_HEADER = "Authorization";

    /**
     * 令牌前缀
     */
    String JWT_TOKEN_PREFIX = "Bearer ";

    /**
     * JWT载体key
     */
    String JWT_PAYLOAD_KEY = "payload";

    /**
     * Redis缓存权限规则key
     */
    String RESOURCE_ROLES_KEY = "auth:resource:roles";

    /**
     * 黑名单token前缀
     */
    String TOKEN_USER_KEY = "auth:token:userid:";

    /**
     * C端app token前缀
     */
    String CLIENT_APP_TOKEN_USER_KEY = "client:app:auth:token:userid:";

    /**
     * C端-小店后台 token前缀
     */
    String CLIENT_SHOP_TOKEN_USER_KEY = "client:shop:auth:token:userid:";

    /**
     * C端PC token前缀
     */
    String CLIENT_PC_TOKEN_USER_KEY = "client:pc:auth:token:userid:";

    /**
     * C端 token前缀
     */
    String CLIENT_TOKEN_USER_KEY = "client:%s:auth:token:userid:";

    /**
     * 密码加密方式
     */
    String BCRYPT = "{bcrypt}";

    String JWT_USER_ID_KEY = "id";

    String JWT_CLIENT_ID_KEY = "client_id";

    /**
     * 账号锁定次数
     */
    String ACCOUNT_LOCKOUT_TIMES = "account:lockout:times:username:";

    /**
     * 账号锁定
     */
    String ACCOUNT_LOCKOUT = "account:lockout:userid:";

    /**
     * 账号查询
     */
    String ACCOUNT_QUERY_KEY = "account:userid:";

    /**
     * 登录验证码
     */
    String CAPTCHA_KEY = "auth:captcha:uuid:";

    /**
     * 主数据 （表）
     */
    String MASTER_DATA_TABLE ="master:data:table:";


    /**
     * 主数据 （行）
     */
    String MASTER_DATA_ROW ="master:data:row:";

    /**
     * 邮箱验证码key
     */
    String EMAIL_CODE_KEY ="email:code:userid:";

    /**
     * 订单失效任务的实例编号id(用于记录订单的延迟加载失效任务实例运行编号,可用于取消运行)
     */
    String ORDER_INSTANCELD_KEY = "order:id:";

    /**
     * 系列团 首页分组
     */
    String TOUR_HOME_GROUP = "trip:home:group";

    /**
     * 系列团 首页三级分类
     */
    String TOUR_HOME_CATAGORY = "trip:home:catagory:";

    /**
     * 系列团 团期详情缓存
     */
    String TOUR_SCHEDULE_DETAILS = "trip:schedule:details:";

    /**
     * 系列团 团期详情查询占位锁
     */
    String TOUR_SCHEDULE_DETAILS_LOCK = "trip:schedule:details:lock:";

    /**
     * 系列团 团期出行日期
     */
    String TOUR_SCHEDULE_DEPARTURE_DATE = "trip:schedule:departure:date:";

    /**
     * 系列团 缓存更新时间
     */
    String TOUR_CACHE_UPDATE = "trip:cache:update";

    /**
     * 系列团订单 关闭占位
     */
    String ORDER_TOUR_CLOSE_OCCUPY_ID_KEY = "order:tour:close:occupy:id:";

    /**
     * 系列团订单 关闭留位
     */
    String ORDER_TOUR_CLOSE_KEEP_ID_KEY = "order:tour:close:keep:id:";

    /**
     * 商城 缓存更新时间
     */
    String GOODS_CACHE_UPDATE = "goods:home:cache:update";

    /**
     * 商城 首页分组
     */
    String GOODS_HOME_GROUP = "goods:home:group";

    /**
     * 商城 级联二级分类
     */
    String GOODS_HOME_CLASSIFICATION = "goods:home:classifications";

    /**
     * 商城 级联一二级
     */
    String GOODS_HOME_CLASSIFICATION_ALL = "goods:home:classifications:all";

    /**
     * 商城 商品专题
     */
    String GOODS_HOME_SPECIAL = "goods:home:special";

    /**
     * 商城 商品详情
     */
    String GOODS_COMMODITY_INFO = "goods:home:commodity:info";

    /**
     * 商城 已登录购物车
     */
    String GOODS_COMMODITY_CART = "goods:home:commodity:cart";

    /**
     * 商城 未登录购物车
     */
    String GOODS_COMMODITY_LOGOUT_CART = "goods:home:commodity:logout:cart";

    /**
     * 商城 时间戳策略字段
     */
    String GOODS_COMMODITY_TIME_CART = "goods:home:commodity:time:cart";

    /**
     * 商城 C端关键字推荐
     */
    String GOODS_RECOMMEND_KEYWORD = "goods:home:recommend:keyword";


    /**
     * 机场快线 统一缓存前缀
     */
    String AIR_EXPRESS_HOME = "airexpress:home";

    /**
     * 机场快线 缓存更新时间时间标记
     */
    String AIR_EXPRESS_HOME_UPDATE_TIME = AIR_EXPRESS_HOME+":update";
    // 机场快线-二维码使用方法
    String AIR_EXPRESS_HOME_BOOKING_INFO = AIR_EXPRESS_HOME+":booking:info";

    /**
     * 机场快线 - 订单详情 - 更新时间标记
     */
    String AIR_EXPRESS_ORDER_DETAILS_UPDATE = AIR_EXPRESS_HOME+":order:details:update";
    String AIR_EXPRESS_ORDER_NUMBER = AIR_EXPRESS_HOME+":order:number";
    /**
     * 机场快线 剩余可售票数
     */
    String AIR_EXPRESS_HOME_REMAINDER_NUMBER = AIR_EXPRESS_HOME+":remainder:number:";

    /**
     * 机场快线 剩余票数操作锁
     */
    String AIR_EXPRESS_REMAINDER_NUMBER_LOCK = AIR_EXPRESS_HOME+":remainder:number:lock:";

    /**
     * 短信验证码KEY
     */
    String SMS_CODE_KEY ="sms:code:phone:";

    /**
     * C端账号锁定次数
     */
    String APP_ACCOUNT_LOCKOUT_TIMES = "app:account:lockout:times:userid:";

    /**
     * C端账号锁定
     */
    String APP_ACCOUNT_LOCKOUT = "app:account:lockout:userid:";

    /**
     * C端账号查询
     */
    String APP_ACCOUNT_QUERY_KEY = "app:account:userid:";

    /**
     * C端邮箱验证码key
     */
    String APP_EMAIL_CODE_KEY ="app:email:code:userid:";

    /**
     * 短信验证码错误次数KEY
     */
    String SMS_ERR_COUNT_CODE_KEY ="sms:err:count:code:phone:";

    /**
     * 巴士 - 热门路线
     */
    String BUS_HOT_LINE ="bus:hot:line:";

    /**
     * 巴士 - 缓存 - 更新时间
     */
    String BUS_UPDATE_TIME = "bus:update:time";

    /**
     * 巴士 - 缓存 - 剩余票数操作
     */
    String BUS_REMAINDER_NUMBER = "bus:remainder:number:";

    /**
     * 巴士 - 缓存 - 站点
     */
    String BUS_STOPS = "bus:stops";

    /**
     * 机场快线 剩余票数操作锁
     */
    String BUS_REMAINDER_NUMBER_LOCK = "bus:remainder:number:lock:";

    /**
     * 当地玩乐 产品详情
     */
    String LOCAL_FUN_PRODUCT_DETAILS = "local:fun:product:details:";


    /**
     * 当地玩乐 缓存 上架/更新 时间
     */
    String LOCAL_FUN_UPDATE_TIME = "local:fun:update:time";

    /**
     * 当地玩乐 剩余票数操作锁
     */
    String LOCAL_FUN_REMAINDER_NUMBER = "local:fun:remainder:number:";

    /**
     * 当地玩乐 剩余票数操作锁
     */
    String LOCAL_FUN_REMAINDER_NUMBER_LOCK = "local:fun:number:lock:";

    /**
     * 火车票 缓存
     */
    String TRAIN_PRODUCT_CACHE = "train:product:cache:";

    /**
     * 火车票 缓存 缓存更新时间标记
     */
    String TRAIN_PRODUCT_CACHE_UPDATE = "train:product:cache:update";

    /**
     * 火车票  - 缓存 - 剩余票数操作
     */
    String TRAIN_REMAINDER_NUMBER = "train:remainder:number:";

    /**
     * 火车票 - 缓存 - 更新时间
     */
    String TRAIN_UPDATE_TIME = "train:update:time";

    /**
     * 火车票 剩余票数操作锁
     */
    String TRAIN_REMAINDER_NUMBER_LOCK = "train:remainder:number:lock:";

    /**
     * 火车票 阿里api 响应结果缓存
     */
    String TRAIN_ALI_PRODUCT = "train:ali:product:";

    /**
     * C端用户名锁KEY
     */
    String USER_NAME_LOCK = "user:name:lock:";

    /**
     * C端用户名个数KEY
     */
    String USER_NAME_NUM = "user:name:num:";

    /**
     * C端城市缓存KEY
     */
    String SYS_AREA_KEY = "area:elasticsearch:";

    /**
     * 酒店 缓存 上架/更新 时间
     */
    String HOTEL_UPDATE_TIME = "hotel:update:time:";

    /**
     * 酒店 热门推荐 H5
     */
    String HOTEL_RECOMMEND_TIME = "hotel:recommend:date";

    /**
     * 酒店 热门推荐 PC
     */
    String HOTEL_RECOMMEND_PC_TIME = "hotel:recommend:pc:date";

    /**
     * 酒店 详情
     */
    String HOTEL_DETAIL = "hotel:detail:date";

    /**
     * 酒店房间 详情
     */
    String HOTEL_DETAIL_ROOM = "hotel:detail:room:date";


    /**
     * C端上次拉取各单项的时间KEY
     */
    String USER_RECENT_TIME_KEY = "user:recent:time:";


    /**
     * 套票 产品详情
     */
    String SEASON_PRODUCT_DETAILS = "season:product:details:";

    /**
     * 当地玩乐 缓存 上架/更新 时间
     */
    String  SEASON_UPDATE_TIME = "season:update:time";


    /**
     * C端订单详情KEY
     */
    String USER_ORDER_DETAIL_KEY = "user:order:detail:";

    /**
     * C端景点门票详情KEY
     */
    String SCENIC_ORDER_DETAILS = "scenic:order:detail:";

    /**
     * C端景点门票分类KEY
     */
    String SCENIC_PRODUCT_TYPE_LIST = "scenic:product:type";

    /**
     * C端景点门票订单详情KEY
     */
    String SCENIC_ORDER_DETAIL = "scenic:order:detail:";

    /**
     * C端用户足迹KEY
     */
    String FOOT_POINT_USER_ID = "app:footpoint:userid:";

    /**
     * C端用户最近三次密码KEY
     */
    String RECENT_PASSWORD_USER_ID = "app:recent:password:userid:";

    /**
     * C端固定套票首页推荐数据缓存
     */
    String FIX_PRODUCT_HOME_PAGE_CACHE = "fix:product:home:page:cache";

    /**
     * 旅行团支付回调短信通知次数缓存前缀
     */
    String TOUR_SCHEDULE_SMS = "tour:schedule:sms:";
}
